package org.jeecg.modules.flow.record.entity;

import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;

/**
 * @Description: 业务流程记录信息
 * @Author: jeecg-boot
 * @Date: 2023-09-21
 * @Version: V1.0
 */
@ApiModel(value = "wms_flow_record对象", description = "业务流程记录信息")
@Data
@TableName("wms_flow_record")
public class WmsFlowRecord implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private String id;
    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人")
    private String createBy;
    /**
     * 创建日期
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建日期")
    private Date createTime;
    /**
     * 更新人
     */
    @ApiModelProperty(value = "更新人")
    private String updateBy;
    /**
     * 更新日期
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "更新日期")
    private Date updateTime;
    /**
     * 所属部门
     */
    @ApiModelProperty(value = "所属部门")
    private String sysOrgCode;
    /**
     * 流程唯一码
     */
    @Excel(name = "流程唯一码", width = 15)
    @ApiModelProperty(value = "流程唯一码")
    private String flowCode;
    /**
     * 流程步骤
     */
    @Excel(name = "流程步骤", width = 15)
    @ApiModelProperty(value = "流程步骤")
    private String flowName;
    /**
     * -2 中止 -1 失败 0 无状态；1 执行中；200 成功；；3 跳过
     */
    @Excel(name = "-2 中止 -1 失败 0 无状态；1 执行中；200 成功；；3 跳过", width = 15)
    @ApiModelProperty(value = "-2 中止 -1 失败 0 无状态；1 执行中；200 成功；；3 跳过")
    private Integer status;
    /**
     * 备注
     */
    @Excel(name = "备注", width = 15)
    @ApiModelProperty(value = "备注")
    private String remark;
    /**
     * 流程id
     */
    @ApiModelProperty(value = "流程id")
    private String flowId;
    /**
     * 必经节点
     */
    @Excel(name = "必经节点", width = 15)
    @ApiModelProperty(value = "必经节点")
    private String requiredNode;
    /**
     * 人工节点
     */
    @Excel(name = "人工节点", width = 15)
    @ApiModelProperty(value = "人工节点")
    private String artificialNode;
    /**
     * 可重试
     */
    @Excel(name = "可重试", width = 15)
    @ApiModelProperty(value = "可重试")
    private String retrey;
    /**
     * 系统预置字段
     */
    @Excel(name = "系统预置字段", width = 15)
    @ApiModelProperty(value = "系统预置字段")
    private String sysPresetFields;
    /**
     * 打印配置id
     */
    @Excel(name = "打印配置id", width = 15)
    @ApiModelProperty(value = "打印配置id")
    private String printConfigId;
    /**
     * 节点提交之前的回调
     */
    @Excel(name = "节点提交之前的回调", width = 15)
    @ApiModelProperty(value = "节点提交之前的回调")
    private String callbackBefore;
    /**
     * 节点创建完成以后的回调
     */
    @Excel(name = "节点创建完成以后的回调", width = 15)
    @ApiModelProperty(value = "节点创建完成以后的回调")
    private String callbackCreated;
    /**
     * 失败的回调
     */
    @Excel(name = "失败的回调", width = 15)
    @ApiModelProperty(value = "失败的回调")
    private String callbackFail;
    /**
     * 成功的回调
     */
    @Excel(name = "成功的回调", width = 15)
    @ApiModelProperty(value = "成功的回调")
    private String callbackSuccess;
    /**
     * 如果不是自动节点，页面按钮文案
     */
    @Excel(name = "如果不是自动节点，页面按钮文案", width = 15)
    @ApiModelProperty(value = "如果不是自动节点，页面按钮文案")
    private String buttonText;
    /**
     * 顺序号
     */
    @Excel(name = "顺序号", width = 15)
    @ApiModelProperty(value = "顺序号")
    private Integer sort;
    /**
     * 业务信息id
     */
    @Excel(name = "业务信息id", width = 15)
    @ApiModelProperty(value = "业务信息id")
    private String infoId;
    /**
     * ​是否是草稿节点，草稿可无限保存，执行下个节点，修改为成功
     */
    @Excel(name = "​是否是草稿节点，草稿可无限保存，执行下个节点，修改为成功", width = 15)
    @ApiModelProperty(value = "​是否是草稿节点，草稿可无限保存，执行下个节点，修改为成功")
    private String draft;
    /**
     * ​主管可见
     */
    @Excel(name = "​主管可见", width = 15)
    @ApiModelProperty(value = "​主管可见")
    private String supervisor;
    /**
     * 版本记录 草稿状态+1
     */
    @Excel(name = "版本记录 草稿状态+1", width = 15)
    @ApiModelProperty(value = "版本记录 草稿状态+1")
    private Integer version;
    /**
     * 按钮类型
     */
    @Excel(name = "按钮类型", width = 15)
    @ApiModelProperty(value = "按钮类型")
    private String buttonType;

    /**
     * 是否中止
     */
    @Excel(name = "是否中止", width = 15)
    @ApiModelProperty(value = "是否中止")
    private Integer interrupted;

    /**
     * 中止回调
     */
    @Excel(name = "中止回调", width = 15)
    @ApiModelProperty(value = "中止回调")
    private String callbackInterrupted;

    /**
     * 列表还是表单展示
     */
    @Excel(name = "列表还是表单展示", width = 15)
    @ApiModelProperty(value = "列表还是表单展示")
    private String listOrForm;

    /**
     * 业务按钮展示
     */
    @Excel(name = "业务按钮展示", width = 15)
    @ApiModelProperty(value = "业务按钮展示")
    private String businessButton;

    /**
     * 流程非正常结束 中止的原因 1、手工关闭  2、强制完成 3、取消
     */
    @Excel(name = "流程非正常结束 中止的原因 1、手工关闭  2、强制完成 3、取消", width = 15)
    @ApiModelProperty(value = "流程非正常结束 中止的原因 1、手工关闭  2、强制完成 3、取消")
    private Integer refuseType;

    /**
     * 是否自动流转
     */
    @Excel(name = "是否自动流转", width = 15)
    @ApiModelProperty(value = "是否自动流转")
    private Integer autoNext;

    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建日期")
    private Date completeTime;

    @Excel(name = "失败的类型 no不失败,init初始化失败,before 回调前失败", width = 15)
    @ApiModelProperty(value = "失败的类型 no不失败,init初始化失败,before 回调前失败")
    private String failType;

    @Excel(name = "操作完成人", width = 15)
    @ApiModelProperty(value = "操作完成人")
    private String lastOperator;

    /**是否自动流转*/
    @Excel(name = "异步", width = 15)
    @ApiModelProperty(value = "异步")
    private Integer hasSync;
}
